// api/ai_role_api/ai_role_remove.go
package ai_role_api

import (
	"github.com/gin-gonic/gin"
	"muziai-server/global"
	"muziai-server/models"
	"muziai-server/models/ctype"
	"muziai-server/utils/jwts"
	"muziai-server/utils/res"
)

func (AiRoleApi) AiRoleRemoveView(c *gin.Context) {
	var cr models.IDRequest
	err := c.ShouldBindUri(&cr)
	if err != nil {
		res.FailWithError(c, err)
		return
	}
	_claims, _ := c.Get("claims")
	claims := _claims.(*jwts.Claims)
	var role models.AiRoleModel
	err = global.DB.Take(&role, cr.ID).Error
	if err != nil {
		res.FailWithMsg(c, "角色不存在")
		return
	}

	// 如果是管理员，直接删除
	if claims.Role == ctype.AdminRole {
		if role.IsSystem {
			// 如果是系统角色，最后一个系统角色不能删
			var systemRoleCount int64
			global.DB.Model(models.AiRoleModel{}).Where("is_system = ?", true).Count(&systemRoleCount)
			if systemRoleCount == 1 {
				res.FailWithMsg(c, "不能删除最后一个系统角色")
				return
			}
		}
		global.DB.Delete(&role)

		res.OkWithMsg(c, "删除角色成功")
		return
	}
	// 查这个角色是不是这个用户创建的
	if role.UserID != claims.UserID {
		res.FailWithMsg(c, "不能删除非自己创建的角色")
		return
	}

	if role.IsSquare {
		res.FailWithMsg(c, "不能删除在角色广场中的角色，请提交工单")
		return
	}

	global.DB.Delete(&role)
	res.OkWithMsg(c, "删除角色成功")
	return
}
